<template><div><h2 id="springboot可以同时处理多少请求" tabindex="-1"><a class="header-anchor" href="#springboot可以同时处理多少请求"><span>SpringBoot可以同时处理多少请求</span></a></h2>
<p>SpringBoot默认的内嵌容器是Tomcat，所以实际上是在问Tomcat可以处理多少个请求。</p>
<p>在SpringBoot中处理请求数量相关的参数有四个：</p>
<ul>
<li><strong>server.tomcat.threads.min-spare</strong> : 最少的工作线程数，默认大小是10。</li>
<li><strong>server.tomcat.threads.max</strong> : 最多的工作线程数，默认大小事200。</li>
<li><strong>server.tomcat.max-connections</strong> : 最大连接数，默认是8192。表示Tomcat可以处理的最大请求数量，超过8192的请求就会被放入等待队列。</li>
<li><strong>server.tomcat.accept-count</strong> : 等待队列的长度，默认大小是100。</li>
</ul>
<p>所以，<strong>SpringBoot同时所能处理的最大请求数量是<code v-pre>max-connections</code>+<code v-pre>accept-count</code>，超过该数量的请求直接被丢弃</strong>。</p>
<h2 id="springboot为什么要禁止循环依赖" tabindex="-1"><a class="header-anchor" href="#springboot为什么要禁止循环依赖"><span>SpringBoot为什么要禁止循环依赖</span></a></h2>
<p>在SpringBoot2.6.0的版本默认禁止了循环依赖。
不想你把对象之间设置成相互依赖的关系。</p>
<h2 id="springboot如何自定义starter" tabindex="-1"><a class="header-anchor" href="#springboot如何自定义starter"><span>SpringBoot如何自定义Starter</span></a></h2>
<ol>
<li><strong>创建项目结构：</strong></li>
<li><strong>编写自动配置类：</strong></li>
<li><strong>提供属性配置：</strong></li>
<li><strong>创建META-INF/spring.fatories文件：</strong></li>
<li><strong>定义Starter依赖：</strong></li>
<li><strong>测试和文档：</strong></li>
<li><strong>发布到仓库：</strong></li>
</ol>
<h2 id="springboot的启动原理" tabindex="-1"><a class="header-anchor" href="#springboot的启动原理"><span>SpringBoot的启动原理</span></a></h2>
<ol>
<li><strong>运行Main方法：</strong></li>
<li><strong>运行run方法：</strong></li>
<li><strong>读取配置文件：</strong></li>
<li><strong>自动创建ApplicationContext：</strong></li>
<li><strong>与初始化上下文：</strong></li>
<li><strong>调用refresh：</strong></li>
<li><strong>创建内置的servlet容器</strong></li>
<li><strong>监听器和扩展点</strong></li>
</ol>
<h2 id="为什么springboot的jar可以直接运行" tabindex="-1"><a class="header-anchor" href="#为什么springboot的jar可以直接运行"><span>为什么SpringBoot的jar可以直接运行？</span></a></h2>
<h2 id="springboot的自动配置原理" tabindex="-1"><a class="header-anchor" href="#springboot的自动配置原理"><span>SpringBoot的自动配置原理？</span></a></h2>
<ol>
<li><strong>引入@EnableAutoConfiguraion：</strong></li>
<li><strong>@EnableAutoConfiguraion引入了@Import</strong></li>
<li><strong>解析@Import注解</strong></li>
<li><strong>deferredImportSelector：</strong></li>
<li><strong>读取META-INF/spring.factories文件</strong></li>
<li><strong>过滤出AutoConfigutaionClass：</strong></li>
<li><strong>条件化加载：</strong></li>
</ol>
<h2 id="spring和springboot的关系和区别" tabindex="-1"><a class="header-anchor" href="#spring和springboot的关系和区别"><span>Spring和SpringBoot的关系和区别</span></a></h2>
<p><strong>Spring是框架，SpringBoot是个脚手架</strong>
<strong>SpringBoot是构建在Spring之上的：</strong>
区别：</p>
<ol>
<li><strong>配置方式：</strong></li>
<li><strong>开发速度：</strong></li>
<li><strong>内置Web容器：</strong></li>
</ol>
<h2 id="说说你对springboot的理解" tabindex="-1"><a class="header-anchor" href="#说说你对springboot的理解"><span>说说你对SpringBoot的理解</span></a></h2>
<ol>
<li><strong>内置Starter和自动配置：</strong></li>
<li><strong>零XML配置：</strong></li>
<li><strong>内置Web容器：</strong></li>
<li><strong>微服务支持：</strong></li>
<li><strong>依赖版本管理：</strong></li>
<li><strong>监控和管理：</strong></li>
</ol>
<h2 id="springboot为什么默认使用cglib动态代理" tabindex="-1"><a class="header-anchor" href="#springboot为什么默认使用cglib动态代理"><span>SpringBoot为什么默认使用CGLIB动态代理？</span></a></h2>
<ol>
<li><strong>无需接口：</strong></li>
<li><strong>AOP支持：</strong></li>
<li><strong>可以代理本类方法：</strong></li>
<li><strong>方法调用性能：</strong></li>
</ol>
<h2 id="" tabindex="-1"><a class="header-anchor" href="#"><span></span></a></h2>
<h2 id="-1" tabindex="-1"><a class="header-anchor" href="#-1"><span></span></a></h2>
<h2 id="-2" tabindex="-1"><a class="header-anchor" href="#-2"><span></span></a></h2>
<h2 id="-3" tabindex="-1"><a class="header-anchor" href="#-3"><span></span></a></h2>
<h2 id="-4" tabindex="-1"><a class="header-anchor" href="#-4"><span></span></a></h2>
<h2 id="-5" tabindex="-1"><a class="header-anchor" href="#-5"><span></span></a></h2>
<h2 id="-6" tabindex="-1"><a class="header-anchor" href="#-6"><span></span></a></h2>
<h2 id="-7" tabindex="-1"><a class="header-anchor" href="#-7"><span></span></a></h2>
<h2 id="-8" tabindex="-1"><a class="header-anchor" href="#-8"><span></span></a></h2>
<h2 id="-9" tabindex="-1"><a class="header-anchor" href="#-9"><span></span></a></h2>
<h2 id="-10" tabindex="-1"><a class="header-anchor" href="#-10"><span></span></a></h2>
<h2 id="-11" tabindex="-1"><a class="header-anchor" href="#-11"><span></span></a></h2>
<h2 id="-12" tabindex="-1"><a class="header-anchor" href="#-12"><span></span></a></h2>
<h2 id="-13" tabindex="-1"><a class="header-anchor" href="#-13"><span></span></a></h2>
<h2 id="-14" tabindex="-1"><a class="header-anchor" href="#-14"><span></span></a></h2>
<h2 id="-15" tabindex="-1"><a class="header-anchor" href="#-15"><span></span></a></h2>
<h2 id="-16" tabindex="-1"><a class="header-anchor" href="#-16"><span></span></a></h2>
<h2 id="-17" tabindex="-1"><a class="header-anchor" href="#-17"><span></span></a></h2>
<h2 id="-18" tabindex="-1"><a class="header-anchor" href="#-18"><span></span></a></h2>
<h2 id="-19" tabindex="-1"><a class="header-anchor" href="#-19"><span></span></a></h2>
<h2 id="-20" tabindex="-1"><a class="header-anchor" href="#-20"><span></span></a></h2>
<h2 id="-21" tabindex="-1"><a class="header-anchor" href="#-21"><span></span></a></h2>
<h2 id="-22" tabindex="-1"><a class="header-anchor" href="#-22"><span></span></a></h2>
<h2 id="-23" tabindex="-1"><a class="header-anchor" href="#-23"><span></span></a></h2>
<h2 id="-24" tabindex="-1"><a class="header-anchor" href="#-24"><span></span></a></h2>
<h2 id="-25" tabindex="-1"><a class="header-anchor" href="#-25"><span></span></a></h2>
<h2 id="-26" tabindex="-1"><a class="header-anchor" href="#-26"><span></span></a></h2>
<h2 id="-27" tabindex="-1"><a class="header-anchor" href="#-27"><span></span></a></h2>
<h2 id="-28" tabindex="-1"><a class="header-anchor" href="#-28"><span></span></a></h2>
<h2 id="-29" tabindex="-1"><a class="header-anchor" href="#-29"><span></span></a></h2>
<h2 id="-30" tabindex="-1"><a class="header-anchor" href="#-30"><span></span></a></h2>
<h2 id="-31" tabindex="-1"><a class="header-anchor" href="#-31"><span></span></a></h2>
<h2 id="-32" tabindex="-1"><a class="header-anchor" href="#-32"><span></span></a></h2>
</div></template>


